home *** CD-ROM | disk | FTP | other *** search
/ Network Support Library / RoseWare - Network Support Library.iso / apidev / ndr2.exe / SAMPLE.ASM < prev    next >
Assembly Source File  |  1993-09-02  |  5KB  |  160 lines

  1. ;════════════════════════════════════════════════════════════════════════════
  2. ;The following code was taken from the Network Developer's Resource, published
  3. ;by RoseWare.  All contents are Copyright (c) 1993, RoseWare.  All Rights
  4. ;Reserved.
  5. ;
  6. ;This material is made available as a service for subscribers of the Network
  7. ;Developer's Resource.  This material is not public domain.  Simply put, if 
  8. ;you are not a subscriber of the Network Developer's Resource, you are using 
  9. ;this material illegally.  
  10. ;
  11. ;Those interested in subscribing should contact RoseWare via:
  12. ;
  13. ;CompuServe:    76711,110
  14. ;Internet:      76711.110@compuserve.com
  15. ;Phone:         (703) 799-2509
  16. ;Fax:           (703) 799-8041
  17. ;US Mail:       P.O. Box 257
  18. ;               Mount Vernon, VA  22121-0257
  19. ;
  20. ;Also see the file SUBSCRIB.TXT in this ZIP file...
  21. ;
  22. ;Contents:
  23. ;
  24. ;Excerpts from Grant Echols' article "Dealing with the DOS Requester" in the
  25. ;September/October '93 issue of the Network Developer's Resource.  See text 
  26. ;for explanation of the code.
  27. ;
  28. ;════════════════════════════════════════════════════════════════════════════
  29. ;       File    : SAMPLE.ASM
  30. ;       Author  : Grant Echols
  31. ;       Purpose : Demonstrate the method of interacting with the NetWare DOS
  32. ;               Requester
  33. ;       Build   : TASM SAMPLE
  34. ;                 TLINK SAMPLE
  35. ;               or
  36. ;                 MASM SAMPLE
  37. ;                 LINK SAMPLE
  38. ;       Usage   : SAMPLE
  39. ;       (C) Copyright Grant Echols.  All Rights Reserved.
  40. ;════════════════════════════════════════════════════════════════════════════
  41.  
  42. LF                      equ     10
  43. CR                      equ     13
  44.  
  45. DOS_PRINT_STRING        equ     09h     ;DOS print string function
  46. DOS_TERMINATE           equ     4Ch     ;DOS terminate application function
  47.  
  48. VLM_INT2F_QUERY         equ     7A20h   ;Int 2Fh to find VLM manager VLM.EXE
  49.   GET_VLM_CALL          equ     0000h   ;  BX for _VlmCall
  50.  
  51. VLM_ID_REDIR            equ     0040h   ;REDIR.VLM identification number
  52. VLM_NOTIFY              equ     0001h   ;Notify function
  53.   GEN_VER               equ     0000h   ;  Version sub-function
  54.  
  55. ;════════════════════════════════════════════════════════════════════════════
  56. ; DSeg - Data segment
  57. ;════════════════════════════════════════════════════════════════════════════
  58.  
  59. DSeg    SEGMENT PUBLIC  'DataSeg'
  60.  
  61. vlmCallAddress  dd      0
  62.  
  63. vlmLoaded       db      CR, LF, 'VLM.EXE is loaded$'
  64. vlmNotLoaded    db      CR, LF, 'VLM.EXE is NOT loaded$'
  65.  
  66. redirLoaded     db      CR, LF, 'REDIR.VLM is loaded$'
  67. redirNotLoaded  db      CR, LF, 'REDIR.VLM is NOT loaded$'
  68.  
  69. DSeg    ENDS
  70.  
  71. ;════════════════════════════════════════════════════════════════════════════
  72. ; CSeg - Code segment
  73. ;════════════════════════════════════════════════════════════════════════════
  74.  
  75. CSeg    SEGMENT PUBLIC  'CodeSeg'
  76.     ASSUME  cs: CSeg
  77.  
  78. ;────────────────────────────────────────────────────────────────────────────
  79. ; @VLM_CALL - Macro used to call VLM.EXE _VLMCall dispatch procedure
  80. ;
  81.  
  82. @VLM_CALL       MACRO   destID, destFunc
  83.     push    bp                      ;Save BP before we use it
  84.     mov     bp, 0                   ;Applications call with caller ID = 0
  85.     push    bp                      ;Identify this overlay as the caller
  86.     mov     bp, destID
  87.     push    bp                      ;Identify the destination overlay
  88.     mov     bp, destFunc
  89.     push    bp                      ;Identify the destination function
  90.     call    dword ptr vlmCallAddress
  91.     pop     bp                      ;Restore BP
  92.  
  93. ENDM
  94.  
  95. ;────────────────────────────────────────────────────────────────────────────
  96. ; StartProc - Starting point for SAMPLE program
  97. ;
  98.  
  99. StartProc       proc    near
  100.  ASSUME ds: nothing, es: nothing
  101.     mov     ax, DSeg
  102.     mov     ds, ax
  103.  ASSUME ds: DSeg
  104.  
  105.     ;First we need to find if VLM.EXE is loaded
  106.     mov     ax, VLM_INT2F_QUERY
  107.     mov     bx, GET_VLM_CALL
  108.     int     2Fh                     ;Returns ES:BX with entry point
  109.     or      ax, ax
  110.     jz      VLMIsLoaded
  111.  
  112.     ;VLM.EXE is not loaded so display a message and return
  113.     mov     dx, OFFSET DSeg: vlmNotLoaded
  114.     mov     ah, DOS_PRINT_STRING
  115.     int     21h
  116.     jmp     SHORT Terminate
  117.  
  118. VLMIsLoaded:
  119.     ;Save the VLM.EXE _VLMCall address
  120.     mov     word ptr vlmCallAddress, bx
  121.     mov     word ptr vlmCallAddress + 2, es
  122.  
  123.     ;Display a message indicating VLM.EXE is loaded
  124.     mov     dx, OFFSET DSeg: vlmLoaded
  125.     mov     ah, DOS_PRINT_STRING
  126.     int     21h
  127.  
  128.     ;Now lets see if REDIR.VLM is loaded
  129.     mov     bx, GEN_VER
  130.     @VLM_CALL VLM_ID_REDIR, VLM_NOTIFY
  131.     or      ax, ax                  ;If we got an error its not loaded
  132.     jz      RedirIsLoaded
  133.  
  134.     ;REDIR.VLM is not loaded so display a message and return
  135.     mov     dx, OFFSET DSeg: redirNotLoaded
  136.     mov     ah, DOS_PRINT_STRING
  137.     int     21h
  138.     jmp     SHORT Terminate
  139.  
  140. RedirIsLoaded:
  141.     ;Display a message indicating REDIR.VLM is loaded
  142.     mov     dx, OFFSET DSeg: redirLoaded
  143.     mov     ah, DOS_PRINT_STRING
  144.     int     21h
  145.  
  146. Terminate:
  147.     mov     ah, DOS_TERMINATE       ;Terminate the application
  148.     int     21h
  149.  
  150. StartProc       endp
  151.  
  152. CSeg    ENDS
  153.  
  154.     END     StartProc
  155.  
  156. ;════════════════════════════════════════════════════════════════════════════
  157. ;                                 SAMPLE.ASM
  158. ;════════════════════════════════════════════════════════════════════════════
  159.  
  160.